Make the installed app run: flatten bundle + AHK->exe bridge + icon fix#19
Merged
Conversation
- spec: ICON_PATH pointed at non-existent setup/logo.ico, so the guard left it None and all four exes (and their shortcuts) built with no embedded icon. Point it at scripts/assets/flowkey.ico (the real icon, same file the .iss uses as SetupIconFile), keeping setup/logo.ico as a fallback. - build.ps1: print the frozen dist\FastFlowPrompt tree + key asset locations (exes, _internal, app.js, seed config, .ico). The installed app's path resolution depends on exactly where PyInstaller lands these; this gives the ground truth needed to wire the AHK/Python launch+path code correctly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The installer compiled but produced a non-functional app: a systemic mismatch
between the install layout, paths.py, and the AHK launcher (none of which had
ever been exercised end-to-end). Two coordinated fixes:
1. Flatten the PyInstaller bundle into {app} (was {app}\FastFlowPrompt) and
ship setup/defaults as loose files at {app}\setup\defaults. paths.py's
production mode computes APP_DIR as the dir holding scripts\/ahk\/setup\;
nesting the bundle one level down made APP_DIR resolve to {app}\FastFlowPrompt
so the daemon's autostart command came out empty and the config seed was
looked up in the wrong place. Flattening matches paths.py's documented layout
— NO paths.py change needed (zero risk to the dev install). Also fixes the
four stale {app}\FastFlowPrompt\*.exe references (icons, uninstall icon,
first-run launch) and the uninstall cleanup.
2. AHK->frozen-exe bridge. paths.ahk built scriptPath/chatScriptPath/
daemonScriptPath as A_ScriptDir\*.py, but the installer ships only the .ahk
files + the frozen .exe (never the .py), so grammar fix, chat, the daemon,
AND the per-launch first-run check all looked for missing .py and failed.
New EntrypointCmd_Impl/FrozenEntrypointExe_Impl/RunCmdExec_Impl run the
bundled ffp-*.exe (which take the same CLI args) when present, falling back
to pythonw+.py in dev. FileExist-gated, so dev behavior is unchanged. Routed
all four entrypoints (grammar, daemon, chat, first-run) + shutdown cleanup.
Verified by inspection against the CI freeze tree (exes at bundle root, datas
in _internal\). AHK include graph parse-checks clean. Final validation requires
an actual install (no clean VM available).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the gap the install audit found: the installer compiled but produced a
non-functional app (works in dev only). Coordinated fix:
{app}(was{app}\FastFlowPrompt) andship
setup/defaultsloose at{app}\setup\defaults. Matches paths.py'sdocumented production layout, so APP_DIR resolves correctly and the autostart
command + config seed work — no paths.py change (zero dev risk). Fixes the
four stale
{app}\FastFlowPrompt\*.exerefs + uninstall cleanup.first-run check launched
pythonw+*.py, but only the.exeare shipped.New
EntrypointCmd_Implruns the bundledffp-*.exe(same CLI args) whenpresent, else
pythonw+.pyin dev. FileExist-gated -> dev unchanged.setup/logo.ico; nowscripts/assets/flowkey.ico.Ground truth from the CI freeze confirms exes at the bundle root and datas in
_internal\. AHK include graph parse-checks clean. Final validation needs anactual install (no clean VM); a workflow_dispatch build verifies the .iss
compiles and the artifact is produced.